home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
JCSM Shareware Collection 1996 September
/
JCSM Shareware Collection (JCS Distribution) (September 1996).ISO
/
prgtools
/
disas.zip
/
CODES.TXT
next >
Wrap
Text File
|
1994-05-01
|
19KB
|
455 lines
OVERZICHT VAN DE 80386-CODE
SUMMARY OF 80386-CODE
d: richting. Als dit bit 1 is, dan is het datatransport in
omgekeerde richting
d: direction. When this bit is set, data is moved in the other
direction.
w: woord. Als dit bit 1 is, dan is de data 16 (of 32) bits
(anders 8).
w: word. When this bit is sit, data is 16 or 32 bits (8
otherwise)
s: sign-extend. Als dit bit 1 is, dan is de brondata 8 bits,
waarvan het hoogste bit gepropageerd wordt.
s: sign-extend. When this bit is set, source data is 8 bits and
the highest bit will be propagated.
rrr: register
cccc: voorwaarde
cccc: condition
M/: mod/rm-byte
I: immediate data
hex binair mnemonisch
00 M 0000 00dw ADD memory,register
04 I 0000 010w ADD register,immediate
06 0000 011d PUSH, POP ES
08 M 0000 00dw OR memory,register
0C I 0000 010w OR register,immediate
0E 0000 0110 PUSH CS
0F 0000 0111 Zie verderop
10 M 0000 00dw ADC memory,register
14 I 0000 010w ADC register,immediate
16 0000 011d PUSH, POP SS
18 M 0000 00dw SBB memory,register
1C I 0000 010w SBB register,immediate
1E 0000 011d PUSH, POP DS
20 M 0000 00dw AND memory,register
24 I 0000 010w AND register,immediate
26 0000 0110 ES: prefix
27 0000 0111 DAA
28 M 0000 00dw SUB memory,register
2C I 0000 010w SUB register,immediate
2E 0000 0110 CS: prefix
2F 0000 0111 DAS
30 M 0000 00dw XOR memory,register
34 I 0000 010w XOR register,immediate
36 0000 0110 SS: prefix
37 0000 0111 AAA
38 M 0000 00dw CMP memory,register
3C I 0000 010w CMP register,immediate
3E 0000 0110 DS: prefix
3F 0000 0111 AAS
40 0100 0rrr INC wordregister
48 0100 1rrr DEC wordregister
50 0101 drrr PUSH, POP wordregister
60 0110 000d PUSHA, POPA
62 M 0110 0010 BOUND wordregister,memory
63 M 0110 0011 ARPL memory,wordregister
64 0110 0100 80386 FS: prefix, NEC REPNC
65 0110 0101 80386 GS: prefix, NEC REPC
66 0110 0110 80386 OS prefix
67 0110 0111 80386 AS prefix
68 I 0110 10s0 PUSH immediate
69 M I 0110 10s1 IMUL register,memory,immediate
6C 0110 11dw INS, OUTS
70 I 0111 cccc J voorwaardelijk
80 M/0 1000 00sw ..00 0... ADD memory,immediate
80 M/1 1000 00sw ..00 1... OR memory,immediate
80 M/2 1000 00sw ..01 0... ADC memory,immediate
80 M/3 1000 00sw ..01 1... SBB memory,immediate
80 M/4 1000 00sw ..10 0... AND memory,immediate
80 M/5 1000 00sw ..10 1... SUB memory,immediate
80 M/6 1000 00sw ..11 0... XOR memory,immediate
80 M/7 1000 00sw ..11 1... CMP memory,immediate
82 1000 0010 niet gedefinieerd
84 M 1000 010w TEST memory,register
86 M 1000 011w XCHG memory,register
88 M 1000 10dw MOV memory,register
8C M 1000 11d0 MOV memory,segmentregister
8D M 1000 1101 LEA wordregister,memory
8F M/0 1000 1111 ..00 0... POP memory
90 1001 0rrr XCHG AX,wordregister
98 1001 100w CBW, CWD
9A I 1001 1010 CALL intersegment
9B 1001 1011 WAIT
9C 1001 110d PUSHF, POPF
9E 1001 111d SAHF, LAHF
A0 M 1010 00dw MOV register,memory
A4 1010 010w MOVS
A6 1010 011w CMPS
A8 I 1010 100w TEST AL,immediate, TEST
AX,immediate
AA 1010 101w STOS
AC 1010 110w LODS
AE 1010 111w SCAS
B0 I 1011 wrrr MOV register,immediate
C0 M/0 I 1100 000w ..00 0... ROL memory,immediate
C0 M/1 I 1100 000w ..00 1... ROR memory,immediate
C0 M/2 I 1100 000w ..01 0... RCL memory,immediate
C0 M/3 I 1100 000w ..01 1... RCR memory,immediate
C0 M/4 I 1100 000w ..10 0... SHL memory,immediate
C0 M/5 I 1100 000w ..10 1... SHR memory,immediate
C0 M/6 I 1100 000w ..11 0... niet gedefinieerd
C0 M/7 I 1100 000w ..11 1... SAR memory,immediate
C2 I 1100 0010 RET immediate
C3 1100 0011 RET
C4 M 1100 0100 LES wordregister,memory
C5 M 1100 0101 LDS wordregister,memory
C6 M/0 I 1100 011w ..00 0... MOV memory,immediate
C6 M/1 1100 011w ..00 1... Niet gedefinieerd
C6 M/2 1100 011w ..01 .... Niet gedefinieerd
C6 M/4 1100 011w ..1. .... Niet gedefinieerd
C8 I I 1100 1000 ENTER word,byte
C9 1100 1001 LEAVE
CA I 1100 1010 RETF word
CB 1100 1011 RETF
CC 1100 1100 INT 3
CD I 1100 1101 INT byte
CE 1100 1110 INTO
CF 1100 1111 IRET
D0 M/0 1101 000w ..00 0... ROL memory,1
D0 M/1 1101 000w ..00 1... ROR memory,1
D0 M/2 1101 000w ..01 0... RCL memory,1
D0 M/3 1101 000w ..01 1... RCR memory,1
D0 M/4 1101 000w ..10 0... SHL memory,1
D0 M/5 1101 000w ..10 1... SHR memory,1
D0 M/6 1101 000w ..11 0... niet gedefinieerd
D0 M/7 1101 000w ..11 1... SAR memory,CL
D2 M/0 1101 001w ..00 0... ROL memory,CL
D2 M/1 1101 001w ..00 1... ROR memory,CL
D2 M/2 1101 001w ..01 0... RCL memory,CL
D2 M/3 1101 001w ..01 1... RCR memory,CL
D2 M/4 1101 001w ..10 0... SHL memory,CL
D2 M/5 1101 001w ..10 1... SHR memory,CL
D2 M/6 1101 001w ..11 0... niet gedefinieerd
D2 M/7 1101 001w ..11 1... SAR memory,CL
D4 I 1101 0100 AAM
D5 I 1101 0101 AAD
D6 1101 0110 ongedefinieerd
D7 1101 0111 XLAT
D8 M/0 1101 1000 ..00 0... FADD dword
D8 M/1 1101 1000 ..00 1... FMUL dword
D8 M/2 1101 1000 ..01 0... FCOM dword
D8 M/3 1101 1000 ..01 1... FCOMP dword
D8 M/4 1101 1000 ..10 0... FSUB dword
D8 M/5 1101 1000 ..10 1... FSUBR dword
D8 M/6 1101 1000 ..11 0... FDIV dword
D8 M/7 1101 1000 ..11 1... FDIVR dword
D8 C0 1101 1000 1100 0iii FADD 0,i
D8 C8 1101 1000 1100 1iii FMUL 0,i
D8 D0 1101 1000 1101 0iii FCOM 0,i
D8 D8 1101 1000 1101 1iii FCOMP 0,i
D8 E0 1101 1000 1110 0iii FSUB 0,i
D8 E8 1101 1000 1110 1iii FSUBR 0,i
D8 F0 1101 1000 1111 0iii FDIV 0,i
D8 F8 1101 1000 1111 1iii FDIVR 0,i
D9 M/0 1101 1001 ..00 0... FLD dword
D9 M/1 1101 1001 ..00 1... niet gedefinieerd
D9 M/2 1101 1001 ..01 0... FST dword
D9 M/3 1101 1001 ..01 1... FSTP dword
D9 M/4 1101 1001 ..10 0... FLDENV dword
D9 M/5 1101 1001 ..10 1... FLDCW dword
D9 M/6 1101 1001 ..11 0... FSTENV dword
D9 M/7 1101 1001 ..11 1... FSTCW dword
D9 C0 1101 1001 1100 0iii FLD i
D9 C8 1101 1001 1100 1iii FXCH 0,i
D9 D0 1101 1001 1101 0000 FNOP
D9 D1 1101 1001 1101 iii1 niet gedefinieerd
D9 D2 1101 1001 1101 ii1i niet gedefinieerd
D9 D4 1101 1001 1101 i1ii niet gedefinieerd
D9 D8 1101 1001 1101 1iii niet gedefinieerd
D9 E0 1101 1001 1110 0000 FCHS
D9 E1 1101 1001 1110 0001 FABS
D9 E2 1101 1001 1110 0010 niet gedefinieerd
D9 E3 1101 1001 1110 0011 niet gedefinieerd
D9 E4 1101 1001 1110 0100 FTST
D9 E5 1101 1001 1110 0101 FXAM
D9 E6 1101 1001 1110 0110 niet gedefinieerd
D9 E7 1101 1001 1110 0111 niet gedefinieerd
D9 E8 1101 1001 1110 1000 FLD1
D9 E9 1101 1001 1110 1001 FLDL2T
D9 EA 1101 1001 1110 1010 FLDL2E
D9 EB 1101 1001 1110 1011 FLDPI
D9 EC 1101 1001 1110 1100 FLDLG2
D9 ED 1101 1001 1110 1101 FLDLN2
D9 EE 1101 1001 1110 1110 FLDZ
D9 EF 1101 1001 1110 1111 niet gedefinieerd
D9 F0 1101 1001 1111 0000 F2XM1
D9 F1 1101 1001 1111 0001 FYL2X
D9 F2 1101 1001 1111 0010 FPTAN
D9 F3 1101 1001 1111 0011 FPATAN
D9 F4 1101 1001 1111 0100 FXTRACT
D9 F5 1101 1001 1111 0101 FPREM1
D9 F6 1101 1001 1111 0110 FDECSTP
D9 F7 1101 1001 1111 0111 FINCSTP
D9 F8 1101 1001 1111 1000 FPREM
D9 F9 1101 1001 1111 1001 FYL2XP1
D9 FA 1101 1001 1111 1010 FSQRT
D9 FB 1101 1001 1111 1011 FSINCOS
D9 FC 1101 1001 1111 1100 FRNDINT
D9 FD 1101 1001 1111 1101 FSCALE
D9 FE 1101 1001 1111 1110 FSIN
D9 FF 1101 1001 1111 1111 FCOS
DA M/0 1101 1010 ..00 0... FIADD dword
DA M/1 1101 1010 ..00 1... FIMUL dword
DA M/2 1101 1010 ..01 0... FICOM dword
DA M/3 1101 1010 ..01 1... FICOMP dword
DA M/4 1101 1010 ..10 0... FISUB dword
DA M/5 1101 1010 ..10 1... FISUBR dword
DA M/6 1101 1010 ..11 0... FIDIV dword
DA M/7 1101 1010 ..11 1... FIDIVR dword
DA C0 1101 1010 110. .... niet gedefinieerd
DA E0 1101 1010 1110 0... niet gedefinieerd
DA E0 1101 1010 1110 1000 niet gedefinieerd
DA E9 1101 1010 1110 1001 FUCOMPP
DA EA 1101 1010 1110 1.1. niet gedefinieerd
DA EC 1101 1010 1110 11.. niet gedefinieerd
DB M/0 1101 1011 ..00 0... FILD dword
DB M/1 1101 1011 ..00 1... niet gedefinieerd
DB M/2 1101 1011 ..01 0... FIST dword
DB M/3 1101 1011 ..01 1... FISTP dword
DB M/4 1101 1011 ..10 0...
DB M/5 1101 1011 ..10 1... FLD tword
DB M/6 1101 1011 ..11 0...
DB M/7 1101 1011 ..11 1... FSTP tword
DB E0 1101 1011 1110 0000 FENI
DB E1 1101 1011 1110 0001 FDISI
DB E2 1101 1011 1110 0010 FCLEX
DB E3 1101 1011 1110 0011 FINIT
DB E4 1101 1011 1110 0100 FSETPM
DB E5 1101 1011 1110 0101 niet gedefinieerd
DB E6 1101 1011 1110 0110 niet gedefinieerd
DB E7 1101 1011 1110 0111 niet gedefinieerd
DB E8 1101 1011 1110 1000 FBANK 0
DB E9 1101 1011 1110 1001 niet gedefinieerd
DB EA 1101 1011 1110 1010 FBANK 2
DB EB 1101 1011 1110 1011 FBANK 1
DB F0 1101 1011 1111 0000 niet gedefinieerd
DB F1 1101 1011 1111 0001 F4X4
DB F2 1101 1011 1111 001. niet gedefinieerd
DB F4 1101 1011 1111 01.. niet gedefinieerd
DB F8 1101 1011 1111 1... niet gedefinieerd
DC M/0 1101 1100 ..00 0... FADD qword
DC M/1 1101 1100 ..00 1... FMUL qword
DC M/2 1101 1100 ..01 0... FCOM qword
DC M/3 1101 1100 ..01 1... FCOMP qword
DC M/4 1101 1100 ..10 0... FSUB qword
DC M/5 1101 1100 ..10 1... FSUBR qword
DC M/6 1101 1100 ..11 0... FDIV qword
DC M/7 1101 1100 ..11 0... FDIVR qword
DC C0 1101 1100 1100 0rrr FADD i,0
DC C8 1101 1100 1100 1rrr FMUL i,0
DC D0 1101 1100 1101 .... niet gedefinieerd
DC E0 1101 1100 1110 0rrr FSUBR i,0
DC E8 1101 1100 1101 1... niet gedefinieerd
DC F0 1101 1100 1111 0rrr FDIVR i,0
DC F8 1101 1100 1111 1rrr FDIV i,0
DD M/0 1101 1101 ..00 0... FLD qword
DD M/1 1101 1101 ..00 1... niet gedefinieerd
DD M/2 1101 1101 ..01 0... FST qword
DD M/3 1101 1101 ..01 1... FSTP qword
DD M/4 1101 1101 ..10 0... FRSTOR
DD M/5 1101 1101 ..10 1... niet gedefinieerd
DD M/6 1101 1101 ..11 0... FSAVE
DD M/7 1101 1101 ..11 1... FSTSW word
DD C0 1101 1101 1100 0rrr FFREE i
DD C8 1101 1101 1100 1... niet gedefinieerd
DD D0 1101 1101 1101 0rrr FST i
DD D8 1101 1101 1101 1rrr FSTP i
DD E0 1101 1101 1110 0rrr FUCOM i
DD E8 1101 1101 1110 1rrr FUCOMP i
DD F0 1101 1101 1111 0rrr niet gedefinieerd
DD F8 1101 1101 1111 1rrr niet gedefinieerd
DE M/0 1101 1110 ..00 0... FIADD word
DE M/1 1101 1110 ..00 1... FIMUL word
DE M/2 1101 1110 ..01 0... FICOM word
DE M/3 1101 1110 ..01 1... FICOMP word
DE M/4 1101 1110 ..10 0... FISUB word
DE M/5 1101 1110 ..10 1... FISUBR word
DE M/6 1101 1110 ..11 0... FIDIV word
DE M/7 1101 1110 ..11 1... FIDIVR word
DE C0 1101 1110 1100 0rrr FADDP i,0
DE C8 1101 1110 1100 1rrr FMULP i,0
DE D0 1101 1110 1100 0... niet gedefinieerd
DE D0 1101 1110 1100 1000 niet gedefinieerd
DE D9 1101 1110 1100 1001 FCOMPP
DE DA 1101 1110 1100 1.1. niet gedefinieerd
DE DC 1101 1110 1100 11.. niet gedefinieerd
DE E0 1101 1110 1110 0rrr FSUBRP i,0
DE E8 1101 1110 1110 1rrr FSUBP i,0
DE F0 1101 1110 1111 0rrr FDIVRP i,0
DE F8 1101 1110 1111 1rrr FDIVP i,0
DF M/0 1101 1111 ..00 0... FILD word
DF M/1 1101 1111 ..00 1... niet gedefinieerd
DF M/2 1101 1111 ..01 0... FIST word
DF M/3 1101 1111 ..01 1... FISTP word
DF M/4 1101 1111 ..10 0... FBLD tword
DF M/5 1101 1111 ..10 1... FILD qword
DF M/6 1101 1111 ..11 0... FBSTP tword
DF M/7 1101 1111 ..11 1... FISTP qword
DF C0 1101 1111 110. .... niet gedefinieerd
DF E0 1101 1111 1110 0000 FSTSW AX
DF E1 1101 1111 1110 0001 niet gedefinieerd
DF E2 1101 1111 1110 001. niet gedefinieerd
DF E4 1101 1111 1110 01.. niet gedefinieerd
DF E8 1101 1111 1110 1... niet gedefinieerd
DF F0 1101 1111 1111 .... niet gedefinieerd
E0 1110 0000 LOOPNE
E1 1110 0001 LOOPE
E2 1110 0010 LOOP
E3 1110 0011 J(E)CXZ
E4 1110 00dw IN, OUT (immediate port-address)
E8 1110 1000 CALL
E9 1110 1001 JMP NEAR
EA 1110 1010 JMP FAR
EB 1110 1011 JMP SHORT
EC 1110 11dw IN, OUT (port-address in DX)
F0 1111 0000 LOCK: prefix
F1 1111 0001 niet gedefinieerd
F2 1111 0010 REPNE: prefix
F3 1111 0011 REPE: prefix
F4 1111 0100 HLT
F5 1111 0101 CMC
F6 M/0 1111 011w ..00 0... TEST
F6 M/1 1111 011w ..00 1... niet gedefinieerd
F6 M/2 1111 011w ..01 0... NOT
F6 M/3 1111 011w ..01 1... NEG
F6 M/4 1111 011w ..10 0... MUL
F6 M/5 1111 011w ..10 1... IMUL
F6 M/6 1111 011w ..11 0... DIV
F6 M/7 1111 011w ..11 1... IDIV
F8 1111 1000 CLC
F9 1111 1001 STC
FA 1111 1010 CLI
FB 1111 1011 STI
FC 1111 1100 CLD
FD 1111 1101 STD
FE M/0 1111 111w ..00 0... INC
FE M/1 1111 111w ..00 1... DEC
FE M/2 1111 1110 ..01 .... niet gedefinieerd
FE M/4 1111 1110 ..1. .... niet gedefinieerd
FF M/2 1111 1111 ..01 0... CALL NEAR INDIRECT
FF M/3 1111 1111 ..01 1... CALL FAR INDIRECT
FF M/4 1111 1111 ..10 0... JMP NEAR INDIRECT
FF M/5 1111 1111 ..10 1... JMP FAR INDIRECT
FF M/6 1111 1111 ..11 0... PUSH
FF M/7 1111 1111 ..11 1... niet gedefinieerd
instructies die beginnen met 0F
0F 00 M/0 0000 0000 ..00 0... SLDT
0F 00 M/1 0000 0000 ..00 1... STR
0F 00 M/2 0000 0000 ..01 0... LLDT
0F 00 M/3 0000 0000 ..01 1... LTR
0F 00 M/4 0000 0000 ..10 0... VERR
0F 00 M/5 0000 0000 ..10 1... VERW
0F 01 M/0 0000 0001 ..00 0... SGDT
0F 01 M/1 0000 0001 ..00 1... SIDT
0F 01 M/2 0000 0001 ..01 0... LGDT
0F 01 M/3 0000 0001 ..01 1... LIDT
0F 01 M/4 0000 0001 ..10 0... SMSW
0F 01 M/6 0000 0001 ..11 0... LMSW
0F 02 0000 0010 LAR
0F 03 0000 0011 LSL
0F 05 0000 0101 LOADALL zie voetnoot
0F 06 0000 0110 CLTS
0F 10 0001 i00w TESTBIT (NEC)
0F 12 0001 i01w CLRBIT (NEC)
0F 14 0001 i10w SETBIT (NEC)
0F 16 0001 i11w NOTBIT (NEC)
0F 20 0010 00d0 MOV reg,CR
0F 21 0010 00d1 MOV reg,DR
0F 24 0010 01d0 MOV reg,TR
0F 28 0010 1000 ROL4 (NEC)
0F 2A 0010 1010 ROR4 (NEC)
0F 20 0010 0000 ADD4S (NEC)
0F 22 0010 0010 SUB4S (NEC)
0F 26 0010 0110 CMP4S (NEC)
0F 31 0011 i001 STOBITS (NEC)
0F 33 0011 i011 LODBITS (NEC)
0F 80 1000 cccc J voorwaardelijk
0F 90 M/0 1001 cccc ..00 0... SET voorwaardelijk
0F A0 1010 000d PUSH,POP FS zie voetnoot
0F A2 1010 0010 niet gedefinieerd
0F A3 1010 0011 BT
0F A4 1010 0100 SHLD immediate
0F A5 1010 0101 SHLD CL
0F A8 1010 100d PUSH,POP GS zie voetnoot
0F AB 1010 1011 BTS
0F AC 1010 1100 SHRD immediate
0F AD 1010 1101 SHRD CL
0F AF 1010 1111 IMUL
0F B0 1011 000w ongedefinieerd
0F B2 1011 0010 LSS
0F B3 1011 0011 BTR
0F B4 1011 0100 LFS
0F B5 1011 0101 LGS
0F B6 1011 011w MOVZX
0F BA M/4 1011 1010 ..10 0... BT
0F BA M/5 1011 1010 ..10 1... BTS
0F BA M/6 1011 1010 ..11 0... BTR
0F BA M/7 1011 1010 ..11 1... BTC
0F BB 1011 1011 BTC
0F BC 1011 1100 BSF
0F BD 1011 1101 BSR
0F BE 1011 111w MOVSX
0F FF 1111 1111 CALL80 (NEC)
Voetnoten:
LOADALL (0F 05) 00001111 00000101 is een ongedocumenteerde
instructie die alleen op de 80286 werkt.
PUSH/POP segmentregister (0F 80) 00001111 10...00d
In meerdere boeken heb ik gelezen dat deze instructie met alle
segmentregisters werkt. Dit is niet juist. Deze instructie
werkt alleen met FS en GS, respectievelijk gecodeerd als 100 en
101. De opcodes zijn dus (0F A0) 00001111 1010.00d
Probeert men segmentregister CS, DS, ES of SS, dan krijgt men
namelijk de opcodes 00001111 100..00d welke een andere betekenis
hebben.
Footnotes:
LOADALL (0F 05) is an undocumented instruction which works on the
80286 only.
PUSH/POP segment register (0F 80) 00001111 10...00d
In several books I have read that this instruction can work with
any segment register . This is not correct. This instruction
works with FS and GS only, and these are coded as 100 and 1001.
So the opcodes are 00001111 1010.00d
If you try CS, DS, ES or SS, the opcodes would be 00001111
100..00d and these have another meaning.